package semantico;


public class FuncaoCodigo extends Codigo {
	
	Funcao identificadorFuncao;
	Codigo corpoFuncao;
	int rotuloFuncao;
	
	public FuncaoCodigo(Funcao identificadorFuncao, Codigo corpoFuncao) throws SemanticoException{
		super();
		this.identificadorFuncao = identificadorFuncao;
		this.corpoFuncao = corpoFuncao;
	}
	
	/**
	 * Gera codigo de tres enderecos
	 * @param inicio - marca o inicio do codigo para o comando.
	 * @param primeiraInstrucaoApos - marca a primeira instrucao apos o codigo do comando.
	 * @throws SemanticoException 
	 */
	public void gerar(int inicio, int primeiraInstrucaoApos) throws SemanticoException{
		identificadorFuncao.gerar(0, 0);
		int rotulo = novoRotulo(); //rotulo para 'enquanto'
		rotuloFuncao = rotulo; //salva o rotulo para o 'enquanto'
		emitirRotulos(rotulo);
		corpoFuncao.gerar(0, primeiraInstrucaoApos);
	}

}
